/*** 基础方法库
 * */

/*** 根据数组对象排序 默认升序
 * @param prop 属性值
 * */
export const compareProps= prop=> {
  return function (obj1, obj2) {
    let val1 = obj1[prop];
    let val2 = obj2[prop];
    if (val1 < val2) {
      return -1;
    } else if (val1 > val2) {
      return 1;
    } else {
      return 0;
    }
  }
};

/*** 解码编码学历信息
 * @param education 输入学历
 * 1-初中及小学以下，2-高职/大专，3-本科，4-'硕士',5-'博士',6-'博士后'
 * */
export const transformEducation= education=> {
  if(!education) return null;
  // 若能转化为数字
  let edu;
  try {
    edu= Number(education.trim());
  }catch(e) {
    throw 'parameter must be simple types';
  }
  if(!isNaN(education)){ // 能转为数字
    if(edu===1) return '初中及小学以下';
    if(edu===2) return '高职/大专';
    if(edu===3) return '本科';
    if(edu===4) return '硕士';
    if(edu===5) return '博士';
    if(edu===6) return '博士后';
  }else{
    if(education==='初中及小学以下') return '1';
    if(education==='高职/大专') return '2';
    if(education==='本科') return '3';
    if(education==='硕士') return '4';
    if(education==='博士') return '5';
    if(education==='博士后') return '6';
  }
};

/*** 解码编码工作时长
 * @param education 输入学历
 * 1-一年以下，2-一年至三年，3-三年至五年，4-'五年以上'
 * */
export const transformWorkTime= workTime=> {
  if(!workTime) return null;
  // 若能转化为数字
  let edu;
  try {
    edu= Number(workTime.trim());
  }catch(e) {
    throw 'parameter must be simple types';
  }
  if(!isNaN(edu)){ // 能转为数字
    if(edu===1) return '一年以下';
    if(edu===2) return '一年至三年';
    if(edu===3) return '三年至五年';
    if(edu===4) return '五年以上';
  }else{
    if(workTime==='一年以下') return '1';
    if(workTime==='一年至三年') return '2';
    if(workTime==='三年至五年') return '3';
    if(workTime==='五年以上') return '4';
  }
  return edu;
};

/*** 切割地址
 * @param liveAddr 居住地址
 * */
export const spliceAddress= (liveAddr: string)=> {
  if(!liveAddr) return { address: '', detailAddress: '' };
  // 若能转化为数字
  let index= liveAddr.indexOf('#');
  let address, // 地址
  detailAddress; // 详细地址
  if(index=== -1){
    address= liveAddr;
    detailAddress= ''
  }else{
    const arr= liveAddr.split('#');
    address= arr[0];
    detailAddress= arr[1];
  }
  return { address, detailAddress };
};

/*** 切割base64字符串
 * @param baseString baseString64编码字符串
 * */
export const sliceBase64= (baseString: string= '')=> {
  const str=  'data:image/jpeg;base64,';
  if(!baseString) return;
  if(baseString.startsWith(str)){
    return baseString.replace(str,'');
  }
  if(baseString.startsWith('http')){
    return baseString;
  }
  return null;
};

/*** 转换单位
 * @param money 金额
 * @param unit 单位
 * @param location 位置 0 默认为尾部
 * */
export const transformUnit= (oldStr: any= 100, unit: string= '￥', location: number= String(oldStr).length)=> {
  let value;

  try {
    value= String(oldStr);
  }catch(e) {
    throw 'parameter must be simple types';
  }
  if(!isNaN(Number(value.trim()))) // 增加符号
  {
    const arr= value.split('');
    arr.splice(location,0, unit);
    return arr.join('');
  }
  if(value.indexOf(unit)>-1) // 去除符号
  {
    return value.replace(unit,'');
  }
  return oldStr;
};

/*** 增加空格
* */
export const addEmpty= (value)=> {
  if(!value) return value;
  const arr= removeEmpty(value).split('');
  let index= 0;
  const newArr= arr.map(item=>{
    index++;
    if(index === 4){
      index= 0;
      item+= ' ';
    }
    return item;
  });
  return newArr.join('');
};
/*** 去除空格
 * **/
export const removeEmpty= (value)=> {
  if(!value) return value;
  const arr= value.split('');
  const newArr= arr.filter(item=> item.trim().length> 0);
  return newArr.join('');
};

/*** 过滤地址信息
 * @param addressComponents 要去除的字符串
 * */
export const removeAddressEmpty= (addressComponents)=> {
  if(!addressComponents) return addressComponents;
  const {province, city, district, street, streetNumber }= addressComponents;
  let arr= [];
  arr.push(province);
  arr.push(city);
  arr.push(district);
  arr.push(street);
  arr.push(streetNumber);
  arr.filter(value => value);
  return arr.join('');
};
